//快乐数，对于一个正整数，每一次将该数替换为它每个位置上的数字的平方和，然后重复这个过程直到这个数变为 1，也可能是 无限循环 但始终变不到 1。
import java.util.HashSet;
public class happyNumber {
    public Boolean happy(Integer a){
        HashSet<Integer> set = new HashSet<>();
        //如何取每一个位置上的数字的平方和呢？
        int num = 0;
        while (num!=1){
            num = 0;//初始化num
            while (a>0){
                num += (a%10) * (a%10);//每一位
                a = a/10;
            }
            if(set.contains(num)){//说明已经开始进入无限循环了，不是快乐数
                return false;
            }
            set.add(num);
            a = num;//改变a
        }
        return true;
        //到这里说明能够找到一个为1的情况，但是可能无限循环，那么就要判断什么时候跳出循环了
    }
    public static void main(String[] args) {
        var main = new happyNumber();
        System.out.println(main.happy(2));
    }
}
